PySide/pl

Wprowadzenie

Biblioteka PySide jest wrapperem Pythona dla wieloplatformowego zestawu narzędzi graficznego interfejsu użytkownika (GUI) Qt. FreeCAD używa Qt jako swojego głównego zestawu narzędzi do GUI. Qt samo w sobie jest więcej niż tylko zestawem narzędzi do GUI, jest zbiorem bibliotek C++ dla wielu różnych celów. Na przykład można tworzyć sieci z komponentami biblioteki Qt, wszystko to dostępne w Pythonie poprzez PySide. Każdy interfejs graficzny, który można utworzyć w C++, można również tworzyć i modyfikować w Pythonie. Zaletą używania Pythona jest to, że interfejsy Qt można rozwijać i testować na żywo, ponieważ nie musimy kompilować plików źródłowych.

Zalecany sposób importu PySide (dowolnej wersji) we FreeCAD to:

from PySide import QtCore, QtGui, QtWidgets

Wersje Qt oraz PySide

Przykłady stworzone z PySide. Po lewej: proste okno dialogowe. Po prawej: bardziej złożone okno dialogowe z wykresami.

Przewiń na górę strony

FreeCAD i PySide

Oryginalna idea stojąca za FreeCAD polegała na połączeniu Cas.CADE (jądro geometryczne), Qt (zestaw narzędzi GUI) i Pythona w celu stworzenia darmowego parametrycznego programu CAD 3D z wbudowanym silnikiem skryptowym. Było to na początku lat 2000., czyli przed pojawieniem się PySide, dlatego przez pierwszą dekadę istnienia FreeCAD używano innego wrappera – PyQt. PySide powstało, aby rozwiązać problemy licencyjne związane z PyQt, a przejście FreeCAD na PySide nastąpiło w 2013 roku (commit 1dc122dc9a).

If you would like to know which Qt version your installation uses, the About dialog has version listings where Qt is included.

Aby uzyskać więcej informacji, zobacz strony:

Podczas instalacji programu FreeCAD powinny być zainstalowane zarówno Qt, jak i PySide jako część pakietu. Jeśli samodzielnie kompilujesz program, musisz upewnić się, że obie biblioteki są zainstalowane, aby FreeCAD działał poprawnie. Oczywiście PySide będzie działać tylko wtedy, gdy obecne jest Qt.

Przewiń na górę strony

PySide we FreeCAD z Qt5

The main difference between the PySide and subsequent PySide2 and PySide6 libraries is the namespacing. PySide (Qt4) has the main namespaces QtGui and QtCore, whereas PySide2 (Qt5) and PySide6 (Qt6) introduced the additional namespace QtWidgets, where all the widgets are now located, they used to be in QtGui namespace.

FreeCAD’s approach to handle the different versions of Qt/PySide is to call them all PySide, which really should be thought of as PySideX. It does not matter which Qt/PySide version is installed, they are all imported with PySide.

Ten moduł PySide znajduje się w katalogu Ext/ instalacji FreeCAD skompilowanej dla Qt5.

/usr/share/freecad/Ext/PySide

Moduł ten po prostu importuje niezbędne klasy z PySide2 i umieszcza je w przestrzeni nazw PySide. Oznacza to, że w większości przypadków ten sam kod może być używany zarówno z Qt4, jak i Qt5, pod warunkiem korzystania z pojedynczego modułu PySide.

PySide2.QtCore -> PySide.QtCore
PySide2.QtGui -> PySide.QtGui
PySide2.QtWidgets -> PySide.QtWidgets
PySide2.QtSvg -> PySide.QtSvg
PySide2.QtUiTools -> PySide.QtUiTools

Jedynym nietypowym aspektem jest to, że klasy PySide2.QtWidgets są umieszczone w przestrzeni nazw PySide.QtGui.

PySide2.QtWidgets.QCheckBox -> PySide.QtGui.QCheckBox

But the current recommended way is to use the modern namespacing.

from PySide import QtCore, QtGui, QtWidgets

my_check_box = QtWidgets.QCheckBox()

Przewiń na górę strony

Przykłady użycia PySide

Przykłady PySide są podzielone na 3 części, różniące się stopniem zaawansowania w zakresie PySide, Pythona i wewnętrznych mechanizmów FreeCAD. Pierwsza strona zawiera przegląd PySide; druga i trzecia strona to w większości przykłady kodu na różnych poziomach.

Oczekuje się, że te przykłady będą pomocne na początek, a następnie użytkownik może korzystać z innych zasobów dostępnych online lub z oficjalnej dokumentacji.

Przewiń na górę strony

Dokumentacja

Istnieją pewne różnice w obsłudze widżetów w Qt4 (PySide) i Qt5 (PySide2). Programista powinien być świadomy tych niezgodności i w razie problemów sprawdzić oficjalną dokumentację, jeśli coś nie działa zgodnie z oczekiwaniami na danej platformie. Niemniej jednak, Qt4 jest uważane za przestarzałe, więc większość rozwoju powinna być skierowana na Qt5 i Pythona 3.

Dokumentacja PySide odnosi się do klas w stylu Pythona; jednak ponieważ Qt jest pierwotnie biblioteką C++, te same informacje powinny być dostępne w odpowiedniej dokumentacji C++.

Przewiń na górę strony